//
//  FHMainTabBar.swift
//  FHweibo
//
//  Created by 张嵩雷 on 16/4/8.
//  Copyright © 2016年 feng. All rights reserved.
//

import UIKit

class FHMainTabBar: UITabBar {
    
    //1(闭包使用流程).定义闭包的属性,传递
    var composeClosure:(()->())?
    

//    //定义tabbar按钮总数等于5
    //写到全局FHConst中FHMainTabBarButtonCount
//    private let buttonCount = 5
    
    override func layoutSubviews() {
        super.layoutSubviews()
        
        //计算每个tabBarItem的宽度
        let width = self.bounds.width / CGFloat(FHMainTabBarButtonCount)
        
        //创建每个tabBarItem的frame
        let newFrame = CGRect(x: 0, y: 0, width: width, height: self.bounds.height)
        
        //定义下标
        var index = 0
        
        for view in subviews {
            //判断是否是UITabBarButton
            if view.isKindOfClass(NSClassFromString("UITabBarButton")!) {
                
                view.frame = CGRectOffset(newFrame, CGFloat(index) * width, 0)
                
                //流出第2个位置给加号按钮
                
                index += index == 1 ? 2 : 1
                //等价于下面的判断
//                index ++
//                if index == 2{
//                    index ++
//                }
            }
        }
        
        //设置加号按钮到中间位置
        composeButton.frame = CGRectOffset(newFrame, 2 * width, 0)
    }
    
    // MARK: - 按钮点击事件
    // @objc: 让OC可以调用我们swift的方法,系统默认会为所有的swift方法加上@objc,如果方法加了private,就不会帮我们加@objc
    @objc private func didClickComposeButton() {
    // View 弹不出另外的控制器,点击事件需要告诉外面的控制器
    // 2(闭包使用流程).调用闭包
    // 闭包调用流程3.调用别人设置的闭包
        composeClosure?()
    }
    
    //MARK: 懒加载 
    //加号按钮
    private lazy var composeButton: UIButton = {
        
        let button = UIButton()
        
        //添加背景图片
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button"), forState: .Normal)
        button.setBackgroundImage(UIImage(named: "tabbar_compose_button_highlighted"), forState: .Highlighted)
        //设置图片
        button.setImage(UIImage(named: "tabbar_compose_icon_add"), forState: .Normal)
        button.setImage(UIImage(named: "tabbar_compose_icon_add_highlighted"), forState: .Highlighted)
        
        //给按钮添加点击事件
        button.addTarget(self, action: Selector("didClickComposeButton"), forControlEvents: .TouchUpInside)
        
        //添加按钮到tabBar中
        self.addSubview(button)
        
        return button
    }()
    
}
